// pages/Artists/Artists.js
import request from '../../utils/request';
import PubSub from 'pubsub-js';

Page({
  data: {
    artistInfo: {
      picUrl: '', // 歌手头像
      name: '', // 歌手名称
      fansCount: 0 // 粉丝数量
    },
    songList: [], // 歌曲列表
    currentIndex: 0 // 当前播放的歌曲索引
  },

  onLoad(options) {
    const id = options.id; // 从页面跳转时传入的歌手 ID
    if (id) {
      this.getArtistInfo(id); // 获取歌手头像、姓名和粉丝数量
      this.getArtistSongs(id); // 获取歌手歌曲列表
    } else {
      wx.showToast({
        title: '未接收到歌手 ID',
        icon: 'none'
      });
    }

    // 订阅 switchType 事件
    PubSub.subscribe('switchType', (msg, type) => {
      this.handleSwitchSong(type); // 处理歌曲切换
    });
  },

  // 获取歌手头像、姓名和粉丝数量
  async getArtistInfo(id) {
    try {
      const res = await request('/artist/detail', { id: id }); // 使用正确的 API 接口
      console.log('接口返回数据:', res); // 打印接口返回数据
      if (res.code === 200) {
        const artist = res.data.artist; // 根据 API 返回的数据结构调整
        if (artist) {
          this.setData({
            artistInfo: {
              picUrl: artist.picUrl || '', // 歌手头像
              name: artist.name || '未知歌手', // 歌手名称
              fansCount: artist.fansCount || 0 // 粉丝数量
            }
          });
        } else {
          console.error('未找到歌手信息');
        }
      } else {
        console.error('接口返回数据格式不正确');
      }
    } catch (error) {
      console.error('获取歌手信息失败:', error);
      wx.showToast({
        title: '获取歌手信息失败',
        icon: 'none'
      });
    }
  },

  // 获取歌手歌曲列表
  async getArtistSongs(id) {
    try {
      const res = await request('/artist/top/song', { id });
      console.log('接口返回数据:', res); // 打印接口返回数据
      if (res.code === 200) {
        const songs = res.songs;
        const songList = songs.map(song => ({
          id: song.id,
          name: song.name,
          ar: song.ar,
          al: song.al,
          pop: song.pop || 0 // 热度值，如果不存在则默认为 0
        }));
        this.setData({ songList });
      } else {
        wx.showToast({
          title: '获取歌曲列表失败',
          icon: 'none'
        });
      }
    } catch (error) {
      console.error('获取歌曲列表失败:', error);
      wx.showToast({
        title: '获取歌曲列表失败',
        icon: 'none'
      });
    }
  },

  // 播放歌曲
  playSong(e) {
    const id = e.currentTarget.dataset.id;
    const { songList } = this.data;
    const currentIndex = songList.findIndex(song => song.id === id);
    this.setData({ currentIndex }); // 更新当前播放的歌曲索引
    wx.navigateTo({
      url: `/pages/Song/Song?ids=${id}`
    });
  },

  // 处理歌曲切换
  handleSwitchSong(type) {
    const { songList, currentIndex } = this.data;
    let newIndex = currentIndex;

    if (type === 'prev') {
      newIndex = currentIndex === 0 ? songList.length - 1 : currentIndex - 1; // 上一首
    } else if (type === 'next') {
      newIndex = currentIndex === songList.length - 1 ? 0 : currentIndex + 1; // 下一首
    }

    this.setData({ currentIndex: newIndex }); // 更新当前索引
    const nextSongId = songList[newIndex].id; // 获取下一首歌曲 ID
    wx.navigateTo({ url: `/pages/Song/Song?ids=${nextSongId}` }); // 跳转到新歌曲页面
  },

  // 跳转到评论页
  goToComment(e) {
    const songId = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/Comment/Comment?type=0&id=${songId}`
    });
  }
});